#pragma once

#include <QString>
#include <QDateTime>
#include <QSet>

class MediaItem
{
public:
    struct Metadata {
        QString collection;
        QString filename;
        QDateTime modified;
        qint64 size;
        bool isRaw;
        QDateTime created;
        QSet<QString> keywords;
    };

    virtual bool isSelected() const = 0;
    virtual bool isChecked() const = 0;
    virtual const Metadata & metadata() const = 0;
    virtual class MediaItemImpl * impl() = 0;
};

typedef QSharedPointer<MediaItem> MediaItemPtr;
